package control;

import java.util.List;

import javax.servlet.RequestDispatcher;

import model.Aluno;
import model.Curso;
import model.Professor;
import model.Turma;
import dao.DAOCurso;
import dao.DAOProfessor;
import dao.DAOTurma;

public class PainelCursoBean {
	private String nome,descricao,nomeDel;
	private int cargahoraria;
	
	public String getNomeDel() {
		return nomeDel;
	}
	public void setNomeDel(String nomeDel) {
		this.nomeDel = nomeDel;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public int getCargahoraria() {
		return cargahoraria;
	}
	public void setCargahoraria(int cargahoraria) {
		this.cargahoraria = cargahoraria;
	}
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	public List<Curso> getLista() {
		DAOCurso daoCu = new DAOCurso();
		List<Curso> lista = daoCu.findAll();
		return lista;
	}
	public void cadastrar(){
		DAOCurso daoCu = new DAOCurso();
		String msg;
		
		try {
			daoCu.begin();
			Curso c = new Curso();
			c.setNome(nome);
			c.setCargahoraria(cargahoraria);
			c.setDescricao(descricao);
			daoCu.persist(c);
			daoCu.commit();
			msg = new String ("Curso cadastrado!");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			msg = new String ("Erro ao cadastrar curso!");
			e.getMessage();
		}
	}
	public void deletar(){
		DAOCurso daocurso = new DAOCurso();
		DAOProfessor daoprofessor = new DAOProfessor();
		DAOTurma daoturma = new DAOTurma();
		daocurso.begin();
		Curso c = daocurso.find(nomeDel);
		List<Turma> tms = c.getTurmas();
		for (Turma turma : tms) {
			List<Aluno> als = turma.getAlunos();
			for (Aluno aluno : als) {
				aluno.removeTurma(turma);					
			}
			Professor auxp = turma.getProfessor();
			Curso auxc = turma.getCurso();
			turma.setProfessor(null);
			turma.setCurso(null);
			daoprofessor.merge(auxp);
			daocurso.merge(auxc);
			daoturma.merge(turma);
		}
		daocurso.remove(c);
		daocurso.commit();
	}
}
